// pages/video/video.js
import request from "../../utils/request"
Page({

    /**
     * 页面的初始数据
     */
    data: {
        flag:false,//判断第一次数据加载是否显示l-status-show
        tabList:[],//导航列表
        currentTabId:-1,//现在导航标识id
        videoId:'',//现在播放视频标识id
        _videoObj:{},//所有视频对象{'id1':[],'id2':[]....},不会响应到视图层
        videoList:[], //当前视频列表，
        videoUpdateTime: [], // 记录video播放的时长列表
        isTriggered:false,
        show: false,
        loading: true,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
         // 显示正在加载
        wx.showLoading({
            title: '正在加载'
        })
        //获得导航列表
        this._getTabList()
    },
    //方法集
     toSearch(){
        wx.navigateTo({
            url: '/pages/search/search'
        });
    },
    async _getTabList(){
        let res=await request('/video/group/list',0)
        this.setData({
            tabList: res.data.slice(0, 14),
            currentTabId: res.data[0].id
        })
        console.log(this.data.tabList,'tabList');
        //获得当前第一个currentTabId对应的视频列表
        this._getVideoList(this.data.currentTabId)
    },
    //获得视频列表
    async _getVideoList(tabId){
        
        if(!tabId){
            return
        }
        let videoListData = await request('/video/group',0, {id: tabId});
        // 关闭消息提示框
        wx.hideLoading();
        //为videoListData添加标识id
        let videoList= videoListData.datas.map((item,index,arr)=>{
            index+=1
            item.id=index
            return item
        })
        //将tabId对应的视频列表添加至videoObj中
        
        this.data._videoObj[tabId]=videoList
        console.log(tabId,'ceshi');
        this.setData({
            videoList,
            flag:true,
            isTriggered:false
        })
        console.log(this.data.videoList,22222222222);
    },
    tabItem(e){
        console.log(e);
        var id=e.currentTarget.dataset.id 
        this.setData({
            currentTabId:id
        })
        
        let obj=this.data._videoObj
        if(obj[id] && obj[id].length>0){//若id在obj中存在
            //获取该tabId下对应的视频列表
            this.setData({
                videoList:obj[id]
            })
            console.log(this.data.videoList,'11111');
        }else{
            //若id在obj中不存在
           wx.showLoading({
               title: '正在加载中'
           });
            this._getVideoList(id)
        }

    },
    //播放视频
    handlePlay(e){
        let vid = e.currentTarget.id;
        this.setData({
            videoId: vid
        })
        console.log(vid,'vid');
        // 创建控制video标签的实例对象
        this.videoContext = wx.createVideoContext(vid);
         // 判断当前的视频之前是否播放过，是否有播放记录, 如果有，跳转至指定的播放位置
        let {videoUpdateTime} = this.data;
        let videoItem = videoUpdateTime.find(item => item.vid === vid);
        if(videoItem){
        this.videoContext.seek(videoItem.currentTime);
        }
        console.log(this.videoContext);
        this.videoContext.play();
    },
    // 监听视频播放进度的回调
  handleTimeUpdate(event){
    let videoTimeObj = {vid: event.currentTarget.id, currentTime: event.detail.currentTime};
    let {videoUpdateTime} = this.data;
    /*
    * 思路： 判断记录播放时长的videoUpdateTime数组中是否有当前视频的播放记录
    *   1. 如果有，在原有的播放记录中修改播放时间为当前的播放时间
    *   2. 如果没有，需要在数组中添加当前视频的播放对象
    *
    * */
    let videoItem = videoUpdateTime.find(item => item.vid === videoTimeObj.vid);
    if(videoItem){ // 之前有
      videoItem.currentTime = event.detail.currentTime;
    }else { // 之前没有
      videoUpdateTime.push(videoTimeObj);
    }
    // 更新videoUpdateTime的状态
    this.setData({
      videoUpdateTime
    })
  },
  // 视频播放结束调用的回调
  handleEnded(event){
    // 移除记录播放时长数组中当前视频的对象
    let {videoUpdateTime} = this.data;
    videoUpdateTime.splice(videoUpdateTime.findIndex(item => item.vid === event.currentTarget.id), 1);
    this.setData({
      videoUpdateTime
    })
  },
  //下拉刷新
  refresh(){
    //   this.setData({
    //     isTriggered:true
    //   })
      //获取最新播放列表
      this._getVideoList(this.data.currentTabId)
  },
  //上拉加载
  scrolltolower(){
    console.log('上拉刷新');
  },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        
    },
   
    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {
        console.log("上拉加载");
    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})